//
//  LinkList.h
//  LinkListDemo
//
//  Created by 李禹 on 15/5/26.
//  Copyright (c) 2015年 dayu. All rights reserved.
//

#ifndef __LinkListDemo__LinkList__
#define __LinkListDemo__LinkList__

#include <stdio.h>
#include "MacroDefine.h"

#endif /* defined(__LinkListDemo__LinkList__) */

struct LNode {
    ElemType data;
    LNode *next;
};

typedef LNode *LinkList;

void InitList(LinkList &L);
void DestroyList(LinkList &L);
void ClearList(LinkList L);
Status ListEmpty(LinkList &L);
int ListLength(LinkList L);
Status GetElem(LinkList L, int i, ElemType &e);
int LoctionElem(LinkList L, ElemType e, Status(* compare)(ElemType, ElemType));
Status ProiorElem(LinkList L, ElemType cur_e, ElemType &pre_e);
Status NextElem(LinkList L, ElemType cur_e, ElemType &next_e);
Status ListInsert(LinkList L, int i, ElemType e);
Status ListDelete(LinkList L, int i, ElemType &e);
void ListTraverse(LinkList L, void(* visit)(ElemType &));
void ReveserList(LinkList L);
